package com.thinvent.nj.ais.mapper;

import com.thinvent.nj.mybatis.mapper.CURDMapper;
import com.thinvent.nj.ais.entity.Org;
import com.thinvent.nj.ais.entity.Role;
import com.thinvent.nj.ais.entity.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 用户Mapper
 * @author liupeijun
 */
@Repository
public interface UserMapper extends CURDMapper<User, String> {

    /**
     * 根据用户名（登录名）获取用户信息（包含组织，角色的关联属性）
     * @param username
     * @return
     */
    User findByUsername(String username);

    /**
     * 根据组织ID获取该组织下的用户列表
     * @param orgId
     * @return
     */
    List<User> findByOrgId(String orgId);

    /**
     * 根据角色ID获取该角色下的用户列表
     * @param roleId
     * @return
     */
    List<User> findByRoleId(String roleId);

    /**
     * 删除组织用户关系列表
     * @param userId 用户ID
     */
    void deleteUserOrgList(String userId);

    /**
     * 删除用户角色关系列表
     * @param userId 用ID
     */
    void deleteUserRoleList(String userId);

    /**
     * 保存用户组织关联关系
     * @param userId
     * @param orgList
     */
    void insertUserOrgList(@Param("userId") String userId, @Param("orgList") List<Org> orgList);

    /**
     * 保存用户角色关联关系
     * @param userId
     * @param roleList
     */
    void insertUserRoleList(@Param("userId") String userId, @Param("roleList") List<Role> roleList);
}
